import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
axios.defaults.baseURL = 'http://127.0.0.1:8888'
Vue.prototype.axios = axios;
Vue.config.productionTip = false
Vue.use(Vuex)

export default new Vuex.Store({
  // 专门存储变量
  state: {
    uname: 'Eason',
    age: 28,
    sex: 1,
    products:[]
  },
  getters:{
    // 看成计算属性
    // 1.state,自动代表当前store的state内的全部数据状态
    // 2.在使用时作为计算属性出现
    total(state){
      return state.products.length;
    },
    // 使用时作为方法的时候的编写方式
    getByIndex(state){
      return function(index){
        return state.products[index]
      }
    }
  
  },
  // 专门连接页面的方法
  mutations: {
    // 1.会自动将state对象注入到方法中
    // 2.state会自动代表当前store中state内的全部状态
    addAge(state){
      state.age++
    },
    // payload，译为载荷，就是其他的参数，可以为任意类型的数据
    addpro(state,payload){
      state.products.push(payload)
    }
  },
  // 负责发送异步请求axios
  // context代表当前所有的state、getters、mutations、actions
  actions: {
    getData(context){
      axios.get('/getdata').then(res=>{
      //  context.commit('addpro',res.data)
       context.state.products=res.data
       console.log(context)
      })
    }
  },
  modules: {
  }
})
